package day20170505.ch02;

/**
 * 链表的数据结构
 * @author 罗智壕-13424431416
 *
 * 2017年5月5日
 */
public class Stack {
	
	/**
	 * 链表的头节点
	 */
	private Node head;
	
	/**
	 * 构造方法
	 * @param head
	 */
	public Stack(Node head) {
		this.head = head;
	}

	/**
	 * 入栈
	 * @param node
	 */
	public void push(Node node){
		Node temp = this.head;
		node.setNext(temp.getNext());
		temp.setNext(node);
	}
	
	/**
	 * 出栈  1：删除1个节点   2：拿到被你删除的节点  3：为了把证出栈的效率  拿的都是头结点的下一个节点
	 * @return
	 */
	public Node pop(){
		Node temp = this.head;
		System.out.println(temp.getValue());
		if(null != temp.getNext()){
			this.head = temp.getNext();
		}else{
			System.out.println("没子弹了...");
		}
		return temp;
	}
	
	/**
	 * 打印所有的节点
	 */
	public void printStack(){
		Node temp = this.head.getNext();
		while(true){
			if(null != temp){
				System.out.print(temp.getValue() + "-->");
			}else{
				break;
			}
			temp = temp.getNext();
		}
	}
}
